/**
 * @file college.js
 * @description 学院管理相关API接口
 * @created 2024-06-12
 */

import request from '@/utils/request'

/**
 * 学院管理API封装
 */
export function useCollegeApi() {
  return {
    /**
     * 获取学院列表
     * @param {Object} params - 查询参数
     * @returns {Promise<Object>} 响应结果
     */
    getColleges(params = {}) {
      return request({
        url: '/admin/colleges',
        method: 'get',
        params
      })
    },

    /**
     * 获取单个学院详情
     * @param {number|string} collegeId - 学院ID
     * @returns {Promise<Object>} 响应结果
     */
    getCollegeById(collegeId) {
      return request({
        url: `/admin/colleges/${collegeId}`,
        method: 'get'
      })
    },

    /**
     * 创建学院
     * @param {Object} collegeData - 学院数据
     * @returns {Promise<Object>} 响应结果
     */
    createCollege(collegeData) {
      return request({
        url: '/admin/colleges',
        method: 'post',
        data: collegeData
      })
    },

    /**
     * 更新学院信息
     * @param {number|string} collegeId - 学院ID
     * @param {Object} collegeData - 学院更新数据
     * @returns {Promise<Object>} 响应结果
     */
    updateCollege(collegeId, collegeData) {
      return request({
        url: `/admin/colleges/${collegeId}`,
        method: 'put',
        data: collegeData
      })
    },

    /**
     * 删除学院
     * @param {number|string} collegeId - 学院ID
     * @returns {Promise<Object>} 响应结果
     */
    deleteCollege(collegeId) {
      return request({
        url: `/admin/colleges/${collegeId}`,
        method: 'delete'
      })
    },

    /**
     * 获取学院下的班级列表
     * @param {number|string} collegeId - 学院ID
     * @param {Object} params - 查询参数
     * @returns {Promise<Object>} 响应结果
     */
    getCollegeClasses(collegeId, params = {}) {
      return request({
        url: `/admin/colleges/${collegeId}/classes`,
        method: 'get',
        params
      })
    },

    /**
     * 获取学院下的教师列表
     * @param {number|string} collegeId - 学院ID
     * @param {Object} params - 查询参数
     * @returns {Promise<Object>} 响应结果
     */
    getCollegeTeachers(collegeId, params = {}) {
      return request({
        url: `/admin/colleges/${collegeId}/teachers`,
        method: 'get',
        params
      })
    }
  }
}

/**
 * @file college.js
 * @description 学院和班级相关API请求 (针对非 yzh_ 表)
 * @created 2024-06-25
 */

/**
 * 学院相关API (非 yzh_ 表)
 * @description 处理学院数据的CRUD操作 (school_colleges, school_departments)
 */
export const collegeAPI = {
  /**
   * 获取学院列表 (school_colleges)
   * @returns {Promise} 返回学院列表数据
   */
  getColleges() {
    return request.get('/api/admin/school_colleges/') // 修改路径
      .catch(error => {
        console.error('获取学院列表 (school_colleges) 失败:', error)
        throw error
      })
  },

  /**
   * 获取单个学院详情 (school_colleges)
   * @param {number} id - 学院ID
   * @returns {Promise} 返回学院详情
   */
  getCollege(id) {
    return request.get(`/api/admin/school_colleges/${id}/`) // 修改路径
      .catch(error => {
        console.error(`获取学院(ID: ${id})详情 (school_colleges) 失败:`, error)
        throw error
      })
  },

  /**
   * 创建学院 (school_colleges)
   * @param {Object} data - 学院数据
   * @param {string} data.name - 学院名称
   * @returns {Promise} 返回创建结果
   */
  createCollege(data) {
    return request.post('/api/admin/school_colleges/', data) // 修改路径
      .catch(error => {
        console.error('创建学院 (school_colleges) 失败:', error)
        throw error
      })
  },

  /**
   * 获取学院下的班级列表 (school_classes)
   * @param {number} collegeId - 学院ID
   * @returns {Promise} 返回班级列表
   */
  getCollegeClasses(collegeId) {
    return request.get(`/api/admin/school_colleges/${collegeId}/classes/`) // 修改路径
      .catch(error => {
        console.error(`获取学院(ID: ${collegeId})班级列表 (school_classes) 失败:`, error)
        throw error
      })
  },

  /**
   * 获取学院下的系部列表 (school_departments) - 新增
   * @param {number} collegeId - 学院ID
   * @returns {Promise} 返回系部列表
   */
  getCollegeDepartments(collegeId) {
    return request.get(`/api/admin/school_colleges/${collegeId}/departments/`) // 新增方法和路径
      .catch(error => {
        console.error(`获取学院(ID: ${collegeId})系部列表 (school_departments) 失败:`, error)
        throw error
      })
  }
}

/**
 * 班级相关API (非 yzh_ 表)
 * @description 处理班级数据的CRUD操作 (school_classes, school_students)
 */
export const classAPI = {
  /**
   * 获取班级详情 (school_classes)
   * @param {number} collegeId - 学院ID (来自 school_colleges)
   * @param {number} gradeId - 年级ID (假设 school_classes 有年级概念)
   * @param {number} classId - 班级ID (来自 school_classes)
   * @returns {Promise} 返回班级详情
   */
  getClass(collegeId, gradeId, classId) {
    // 注意: gradeId 的概念和路径需要与后端API对齐
    // 假设后端路径为 /api/admin/school_colleges/${collegeId}/grades/${gradeId}/classes/${classId}/
    // 如果没有gradeId层级, 则路径可能是 /api/admin/school_colleges/${collegeId}/classes/${classId}/
    return request.get(`/api/admin/school_colleges/${collegeId}/grades/${gradeId}/classes/${classId}/`)
      .catch(error => {
        console.error(`获取班级(ID: ${classId})详情 (school_classes) 失败:`, error)
        throw error
      })
  },

  /**
   * 获取班级学生列表 (school_students)
   * @param {number} collegeId - 学院ID
   * @param {number} gradeId - 年级ID
   * @param {number} classId - 班级ID
   * @returns {Promise} 返回班级学生列表
   */
  getClassStudents(collegeId, gradeId, classId) {
    return request.get(`/api/admin/school_colleges/${collegeId}/grades/${gradeId}/classes/${classId}/students/`)
      .catch(error => {
        console.error(`获取班级(ID: ${classId})学生列表 (school_students) 失败:`, error)
        throw error
      })
  },
  
  /**
   * 获取学生学习情况
   * @param {number} collegeId - 学院ID
   * @param {number} gradeId - 年级ID
   * @param {number} classId - 班级ID
   * @param {number} studentId - 学生ID
   * @returns {Promise} 返回学生学习情况数据
   */
  getStudentLearning(collegeId, gradeId, classId, studentId) {
    return request.get(`/api/admin/school_colleges/${collegeId}/grades/${gradeId}/classes/${classId}/students/${studentId}/learning/`)
      .catch(error => {
        console.error(`获取学生(ID: ${studentId})学习情况 (school_students) 失败:`, error)
        throw error
      })
  },

  /**
   * 获取学生详情 (school_students)
   * @param {string} studentId - 学生ID
   * @returns {Promise} 返回学生详情
   */
  getStudentDetail(studentId) {
    // 假设学生详情API不依赖学院/班级路径
    console.log(`调用getStudentDetail API (school_students)，学生ID: ${studentId}`)
    return request.get(`/api/admin/school_students/${studentId}/`) // 修改路径
      .catch(error => {
        console.error(`获取学生(ID: ${studentId})详情 (school_students) 失败:`, error)
        // 后备API逻辑可以保留或移除，取决于需求
        throw error 
      })
  },

  /**
   * 创建班级 (school_classes)
   * @param {number} collegeId - 学院ID
   * @param {number} gradeId - 年级ID
   * @param {Object} data - 班级数据
   * @returns {Promise} 返回创建结果
   */
  createClass(collegeId, gradeId, data) {
    return request.post(`/api/admin/school_colleges/${collegeId}/grades/${gradeId}/classes/`, data)
      .catch(error => {
        console.error(`创建班级 (school_classes) 失败:`, error)
        throw error
      })
  },

  /**
   * 获取班级分析数据
   * @param {number} collegeId - 学院ID
   * @param {number} gradeId - 年级ID
   * @param {number} classId - 班级ID
   * @param {string} type - 分析类型 (learning|behavior|warning)
   * @returns {Promise} 返回班级分析数据
   */
  getClassAnalysis(collegeId, gradeId, classId, type) {
    return request.get(`/api/admin/school_colleges/${collegeId}/grades/${gradeId}/classes/${classId}/analysis/${type}/`)
      .catch(error => {
        console.error(`获取班级(ID: ${classId})${type}分析数据 (school_classes) 失败:`, error)
        throw error
      })
  }
}

